This demonstrates how to use the functions in safegraph_process_patterns_functions.R.
library(tidyverse)
library(tigris)
library(sf)
library(mapview)
Sys.setenv(CENSUS_KEY="b88495f8315f45b2d100dee9ba8f4c489a7371c2")
options(
tigris_class = "sf",
tigris_use_cache = TRUE
)
# Load the processing functions. This also loads the normalization functions.
source("safegraph_process_patterns_functions.R")
# SET your path here to the covid19analysis folder.
sg_path <- 'P:/SFBI/Restricted Data Library/Safegraph/covid19analysis/'
# SET your path here to the github covid folder
github_path <- ''
The functions don’t use ca_poi.rds but you will likely want make use of it to get NAICS codes and lat/long for POIs.
poi_ca <- readRDS(paste0(sg_path,'ca_poi.rds'))
Load weekly patterns and corresponding home panel summary.
patterns_W190311 <-
readRDS(paste0(sg_path,'weekly-patterns/v2/main-file/2019-03-11-weekly-patterns-ca.rds'))
hps_W190311 <-
readRDS(paste0(sg_path,'weekly-patterns/v2/home-summary-file/2019-03-11-home-panel-summary.rds'))
Filter by geography or POI type if desired. This will speed up the processing. I’m demonstrating below how to filter by spatial join because the city field in Safegraph may not be accurate for some POIs.
sj_patterns_W190311 <-
patterns_W190311 %>%
left_join(
poi_ca %>%
dplyr::select(
safegraph_place_id,
longitude,
latitude,
naics_code
),
by = "safegraph_place_id"
) %>%
filter(!is.na(longitude)) %>%
mutate(
long = longitude,
lat = latitude
) %>%
st_as_sf(coords = c("long","lat")) %>%
st_set_crs(4326) %>%
st_join(
places("CA", cb=F, progress_bar=F) %>%
filter(NAME == "San Jose") %>%
st_transform(4326) %>%
dplyr::select(NAME),
left=F
)
sj_grocery_patterns_W190311 <-
sj_patterns_W190311 %>%
filter(naics_code == 445110)
kable(
head(
sj_grocery_patterns_W190311 %>%
dplyr::select(
location_name,
street_address,
raw_visit_counts
) %>%
arrange(desc(raw_visit_counts))
)
)
| location_name | street_address | raw_visit_counts | geometry |
|---|---|---|---|
| Safeway | 6477 Almaden Expy | 384 | c(-121.861449, 37.219503) |
| Safeway | 5760 Cottle Rd | 339 | c(-121.802882, 37.246445) |
| Sprouts Farmers Market | 1130 Branham Ln | 321 | c(-121.878189, 37.261821) |
| Lucky Supermarkets | 565 W Capitol Expy | 318 | c(-121.85383, 37.276111) |
| Safeway | 1300 W San Carlos St | 317 | c(-121.911924, 37.322976) |
| Cisco Lakeview Cafe | 225 E Tasman Dr | 287 | c(-121.935025, 37.414563) |
Now we will start using the processing functions. First, just using normBG() will expand the origins but otherwise provide normalized visit counts for the week. You can group_by(safegraph_place_id) to sum up the weekly visit counts for a POI, or you can group_by(origin_census_block_group) to sum up the weekly visit counts for origins.
sj_grocery_patterns_W190311_weekly <-
normBG(sj_grocery_patterns_W190311,hps_W190311)
# saveRDS(sj_grocery_patterns_W190311_weekly, paste0(sg_path,"weekly-patterns/v2/sj_grocery_patterns_W190311_weekly.rds"))
# sj_patterns_W190311_daily <- readRDS(paste0(sg_path,"sj_grocery_patterns_W190311_weekly.rds"))
kable(
sj_grocery_patterns_W190311_weekly %>%
arrange(desc(raw_visit_counts)) %>%
dplyr::select(
location_name,
street_address,
origin_census_block_group,
origin_raw_visitor_counts_high,
origin_raw_visitor_counts_low,
visit_counts_high,
visit_counts_low
) %>%
.[1:37,]
)
| location_name | street_address | origin_census_block_group | origin_raw_visitor_counts_high | origin_raw_visitor_counts_low | visit_counts_high | visit_counts_low |
|---|---|---|---|---|---|---|
| Safeway | 6477 Almaden Expy | 060855119051 | 24 | 24 | 561.50487 | 561.50487 |
| Safeway | 6477 Almaden Expy | 060855119093 | 21 | 21 | 440.18876 | 440.18876 |
| Safeway | 6477 Almaden Expy | 060855119072 | 20 | 20 | 619.54938 | 619.54938 |
| Safeway | 6477 Almaden Expy | 060855119092 | 18 | 18 | 368.30534 | 368.30534 |
| Safeway | 6477 Almaden Expy | 060855119121 | 17 | 17 | 330.08034 | 330.08034 |
| Safeway | 6477 Almaden Expy | 060855119122 | 15 | 15 | 449.70100 | 449.70100 |
| Safeway | 6477 Almaden Expy | 060855119113 | 13 | 13 | 265.52646 | 265.52646 |
| Safeway | 6477 Almaden Expy | 060855119112 | 11 | 11 | 257.79550 | 257.79550 |
| Safeway | 6477 Almaden Expy | 060855119103 | 10 | 10 | 249.88451 | 249.88451 |
| Safeway | 6477 Almaden Expy | 060855119071 | 10 | 10 | 234.20204 | 234.20204 |
| Safeway | 6477 Almaden Expy | 060855119143 | 10 | 10 | 220.91425 | 220.91425 |
| Safeway | 6477 Almaden Expy | 060855119102 | 9 | 9 | 153.73839 | 153.73839 |
| Safeway | 6477 Almaden Expy | 060855119091 | 9 | 9 | 240.55959 | 240.55959 |
| Safeway | 6477 Almaden Expy | 060855119123 | 9 | 9 | 210.93045 | 210.93045 |
| Safeway | 6477 Almaden Expy | 060855119141 | 7 | 7 | 169.06276 | 169.06276 |
| Safeway | 6477 Almaden Expy | 060855119111 | 6 | 6 | 177.21293 | 177.21293 |
| Safeway | 6477 Almaden Expy | 060855119101 | 6 | 6 | 141.97835 | 141.97835 |
| Safeway | 6477 Almaden Expy | 060855119131 | 4 | 2 | 107.95463 | 53.97732 |
| Safeway | 6477 Almaden Expy | 060855067021 | 4 | 2 | 124.87060 | 62.43530 |
| Safeway | 6477 Almaden Expy | 060855030032 | 4 | 2 | 174.19359 | 87.09680 |
| Safeway | 6477 Almaden Expy | 060855061021 | 4 | 2 | 114.52448 | 57.26224 |
| Safeway | 6477 Almaden Expy | 060552003022 | 4 | 2 | 139.91687 | 69.95843 |
| Safeway | 6477 Almaden Expy | 060855119132 | 4 | 2 | 157.28144 | 78.64072 |
| Safeway | 6477 Almaden Expy | 060855029092 | 4 | 2 | 74.20958 | 37.10479 |
| Safeway | 6477 Almaden Expy | 060855011023 | 4 | 2 | 42.45886 | 21.22943 |
| Safeway | 6477 Almaden Expy | 060855035061 | 4 | 2 | 115.29726 | 57.64863 |
| Safeway | 6477 Almaden Expy | 060372765002 | 4 | 2 | 86.29815 | 43.14907 |
| Safeway | 6477 Almaden Expy | 060855067023 | 4 | 2 | 129.82007 | 64.91003 |
| Safeway | 6477 Almaden Expy | 060855123073 | 4 | 2 | 166.16978 | 83.08489 |
| Safeway | 6477 Almaden Expy | 060855029072 | 4 | 2 | 107.52300 | 53.76150 |
| Safeway | 6477 Almaden Expy | 060855120371 | 4 | 2 | 113.50124 | 56.75062 |
| Safeway | 6477 Almaden Expy | 060855120301 | 4 | 2 | 67.94267 | 33.97133 |
| Safeway | 6477 Almaden Expy | 060855018001 | 4 | 2 | 152.52270 | 76.26135 |
| Safeway | 6477 Almaden Expy | 060855023011 | 4 | 2 | 126.21927 | 63.10963 |
| Safeway | 6477 Almaden Expy | 060855122002 | 4 | 2 | 81.81036 | 40.90518 |
| Safeway | 6477 Almaden Expy | 060855119133 | 4 | 2 | 92.99528 | 46.49764 |
| Safeway | 6477 Almaden Expy | NA | 10 | 48 | 256.72706 | 1232.28987 |
Above we only show one Safeway as an example. Note that where previously there was just 1 row, now there are 37, for 36 recorded origins + 1 row for remaining unrecorded origins. The overall difference between upper and lower bound estimates is ~7500 vs 7400.
grocery_visits_cbg <-
sj_grocery_patterns_W190311_weekly %>%
group_by(origin_census_block_group) %>%
summarize(visit_counts_high = sum(visit_counts_high)) %>%
left_join(
block_groups("CA","Santa Clara", cb=F,progress_bar=F) %>%
dplyr::select(origin_census_block_group = GEOID)
) %>%
st_as_sf() %>%
filter(!is.na(origin_census_block_group))
mapview(
grocery_visits_cbg,
zcol = "visit_counts_high",
layer.name = "Week of<br>3/11/19<br>Grocery<br>Visits"
)
Next, getting daily visits.
sj_grocery_patterns_W190311_daily <-
process_patterns_daily(sj_grocery_patterns_W190311,hps_W190311)
sj_grocery_patterns_W190311_daily <-
sj_grocery_patterns_W190311_daily %>%
left_join(
sj_patterns_W190311 %>%
as.data.frame() %>%
dplyr::select(
safegraph_place_id,
location_name,
street_address,
naics_code
)
)
kable(
sj_grocery_patterns_W190311_daily %>%
arrange(desc(raw_visit_counts),date) %>%
dplyr::select(
location_name,
street_address,
date,
daily_visits,
visit_counts_high,
visit_counts_low
) %>%
.[1:7,]
)
| location_name | street_address | date | daily_visits | visit_counts_high | visit_counts_low |
|---|---|---|---|---|---|
| Safeway | 6477 Almaden Expy | 2019-03-11 | 59 | 1155.9347 | 1138.6969 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 45 | 881.6451 | 868.4976 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 53 | 1038.3820 | 1022.8972 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 40 | 783.6846 | 771.9979 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 55 | 1077.5663 | 1061.4971 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 62 | 1214.7111 | 1196.5967 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 70 | 1371.4480 | 1350.9963 |
The same Safeway example is shown, now with 7 rows for each day of the week. The sum of visit_counts_high is the same as the previous example, ~7500.
ggplot(
data = sj_grocery_patterns_W190311_daily %>%
group_by(date) %>%
summarize(
visit_counts_high = sum(visit_counts_high),
visit_counts_low = sum(visit_counts_low)
)
) +
geom_line(
aes(
x = date,
y = visit_counts_high
)
) +
geom_line(
aes(
x = date,
y = visit_counts_low
)
)
The two lines shown are the upper and lower bound estimates.
Next, get daily visits but keep broken out by origin census block group.
sj_grocery_patterns_W190311_origins_daily <-
process_patterns_origins_daily(sj_grocery_patterns_W190311,hps_W190311)
sj_grocery_patterns_W190311_origins_daily <-
sj_grocery_patterns_W190311_origins_daily %>%
left_join(
sj_patterns_W190311 %>%
as.data.frame() %>%
dplyr::select(
safegraph_place_id,
location_name,
street_address,
naics_code
)
)
kable(
sj_grocery_patterns_W190311_origins_daily %>%
filter(safegraph_place_id=="sg:eb3e2bd534b54f2aad866707917607a9") %>%
dplyr::select(
location_name,
street_address,
origin_census_block_group,
date,
daily_visits,
visit_counts_high,
visit_counts_low
) %>%
.[1:70,]
)
| location_name | street_address | origin_census_block_group | date | daily_visits | visit_counts_high | visit_counts_low |
|---|---|---|---|---|---|---|
| Safeway | 6477 Almaden Expy | 060855119051 | 2019-03-11 | 59 | 86.27288 | 86.27288 |
| Safeway | 6477 Almaden Expy | 060855119051 | 2019-03-12 | 45 | 65.80135 | 65.80135 |
| Safeway | 6477 Almaden Expy | 060855119051 | 2019-03-13 | 53 | 77.49937 | 77.49937 |
| Safeway | 6477 Almaden Expy | 060855119051 | 2019-03-14 | 40 | 58.49009 | 58.49009 |
| Safeway | 6477 Almaden Expy | 060855119051 | 2019-03-15 | 55 | 80.42387 | 80.42387 |
| Safeway | 6477 Almaden Expy | 060855119051 | 2019-03-16 | 62 | 90.65964 | 90.65964 |
| Safeway | 6477 Almaden Expy | 060855119051 | 2019-03-17 | 70 | 102.35766 | 102.35766 |
| Safeway | 6477 Almaden Expy | 060855119093 | 2019-03-11 | 59 | 67.63317 | 67.63317 |
| Safeway | 6477 Almaden Expy | 060855119093 | 2019-03-12 | 45 | 51.58462 | 51.58462 |
| Safeway | 6477 Almaden Expy | 060855119093 | 2019-03-13 | 53 | 60.75522 | 60.75522 |
| Safeway | 6477 Almaden Expy | 060855119093 | 2019-03-14 | 40 | 45.85300 | 45.85300 |
| Safeway | 6477 Almaden Expy | 060855119093 | 2019-03-15 | 55 | 63.04787 | 63.04787 |
| Safeway | 6477 Almaden Expy | 060855119093 | 2019-03-16 | 62 | 71.07214 | 71.07214 |
| Safeway | 6477 Almaden Expy | 060855119093 | 2019-03-17 | 70 | 80.24274 | 80.24274 |
| Safeway | 6477 Almaden Expy | 060855119072 | 2019-03-11 | 59 | 95.19118 | 95.19118 |
| Safeway | 6477 Almaden Expy | 060855119072 | 2019-03-12 | 45 | 72.60344 | 72.60344 |
| Safeway | 6477 Almaden Expy | 060855119072 | 2019-03-13 | 53 | 85.51072 | 85.51072 |
| Safeway | 6477 Almaden Expy | 060855119072 | 2019-03-14 | 40 | 64.53639 | 64.53639 |
| Safeway | 6477 Almaden Expy | 060855119072 | 2019-03-15 | 55 | 88.73754 | 88.73754 |
| Safeway | 6477 Almaden Expy | 060855119072 | 2019-03-16 | 62 | 100.03141 | 100.03141 |
| Safeway | 6477 Almaden Expy | 060855119072 | 2019-03-17 | 70 | 112.93869 | 112.93869 |
| Safeway | 6477 Almaden Expy | 060855119092 | 2019-03-11 | 59 | 56.58858 | 56.58858 |
| Safeway | 6477 Almaden Expy | 060855119092 | 2019-03-12 | 45 | 43.16078 | 43.16078 |
| Safeway | 6477 Almaden Expy | 060855119092 | 2019-03-13 | 53 | 50.83381 | 50.83381 |
| Safeway | 6477 Almaden Expy | 060855119092 | 2019-03-14 | 40 | 38.36514 | 38.36514 |
| Safeway | 6477 Almaden Expy | 060855119092 | 2019-03-15 | 55 | 52.75207 | 52.75207 |
| Safeway | 6477 Almaden Expy | 060855119092 | 2019-03-16 | 62 | 59.46597 | 59.46597 |
| Safeway | 6477 Almaden Expy | 060855119092 | 2019-03-17 | 70 | 67.13899 | 67.13899 |
| Safeway | 6477 Almaden Expy | 060855119121 | 2019-03-11 | 59 | 50.71547 | 50.71547 |
| Safeway | 6477 Almaden Expy | 060855119121 | 2019-03-12 | 45 | 38.68129 | 38.68129 |
| Safeway | 6477 Almaden Expy | 060855119121 | 2019-03-13 | 53 | 45.55796 | 45.55796 |
| Safeway | 6477 Almaden Expy | 060855119121 | 2019-03-14 | 40 | 34.38337 | 34.38337 |
| Safeway | 6477 Almaden Expy | 060855119121 | 2019-03-15 | 55 | 47.27713 | 47.27713 |
| Safeway | 6477 Almaden Expy | 060855119121 | 2019-03-16 | 62 | 53.29422 | 53.29422 |
| Safeway | 6477 Almaden Expy | 060855119121 | 2019-03-17 | 70 | 60.17090 | 60.17090 |
| Safeway | 6477 Almaden Expy | 060855119122 | 2019-03-11 | 59 | 69.09468 | 69.09468 |
| Safeway | 6477 Almaden Expy | 060855119122 | 2019-03-12 | 45 | 52.69934 | 52.69934 |
| Safeway | 6477 Almaden Expy | 060855119122 | 2019-03-13 | 53 | 62.06811 | 62.06811 |
| Safeway | 6477 Almaden Expy | 060855119122 | 2019-03-14 | 40 | 46.84385 | 46.84385 |
| Safeway | 6477 Almaden Expy | 060855119122 | 2019-03-15 | 55 | 64.41030 | 64.41030 |
| Safeway | 6477 Almaden Expy | 060855119122 | 2019-03-16 | 62 | 72.60797 | 72.60797 |
| Safeway | 6477 Almaden Expy | 060855119122 | 2019-03-17 | 70 | 81.97674 | 81.97674 |
| Safeway | 6477 Almaden Expy | 060855119113 | 2019-03-11 | 59 | 40.79703 | 40.79703 |
| Safeway | 6477 Almaden Expy | 060855119113 | 2019-03-12 | 45 | 31.11638 | 31.11638 |
| Safeway | 6477 Almaden Expy | 060855119113 | 2019-03-13 | 53 | 36.64818 | 36.64818 |
| Safeway | 6477 Almaden Expy | 060855119113 | 2019-03-14 | 40 | 27.65901 | 27.65901 |
| Safeway | 6477 Almaden Expy | 060855119113 | 2019-03-15 | 55 | 38.03113 | 38.03113 |
| Safeway | 6477 Almaden Expy | 060855119113 | 2019-03-16 | 62 | 42.87146 | 42.87146 |
| Safeway | 6477 Almaden Expy | 060855119113 | 2019-03-17 | 70 | 48.40326 | 48.40326 |
| Safeway | 6477 Almaden Expy | 060855119112 | 2019-03-11 | 59 | 39.60920 | 39.60920 |
| Safeway | 6477 Almaden Expy | 060855119112 | 2019-03-12 | 45 | 30.21041 | 30.21041 |
| Safeway | 6477 Almaden Expy | 060855119112 | 2019-03-13 | 53 | 35.58115 | 35.58115 |
| Safeway | 6477 Almaden Expy | 060855119112 | 2019-03-14 | 40 | 26.85370 | 26.85370 |
| Safeway | 6477 Almaden Expy | 060855119112 | 2019-03-15 | 55 | 36.92383 | 36.92383 |
| Safeway | 6477 Almaden Expy | 060855119112 | 2019-03-16 | 62 | 41.62323 | 41.62323 |
| Safeway | 6477 Almaden Expy | 060855119112 | 2019-03-17 | 70 | 46.99397 | 46.99397 |
| Safeway | 6477 Almaden Expy | 060855119103 | 2019-03-11 | 59 | 38.39371 | 38.39371 |
| Safeway | 6477 Almaden Expy | 060855119103 | 2019-03-12 | 45 | 29.28334 | 29.28334 |
| Safeway | 6477 Almaden Expy | 060855119103 | 2019-03-13 | 53 | 34.48927 | 34.48927 |
| Safeway | 6477 Almaden Expy | 060855119103 | 2019-03-14 | 40 | 26.02964 | 26.02964 |
| Safeway | 6477 Almaden Expy | 060855119103 | 2019-03-15 | 55 | 35.79075 | 35.79075 |
| Safeway | 6477 Almaden Expy | 060855119103 | 2019-03-16 | 62 | 40.34594 | 40.34594 |
| Safeway | 6477 Almaden Expy | 060855119103 | 2019-03-17 | 70 | 45.55186 | 45.55186 |
| Safeway | 6477 Almaden Expy | 060855119071 | 2019-03-11 | 59 | 35.98417 | 35.98417 |
| Safeway | 6477 Almaden Expy | 060855119071 | 2019-03-12 | 45 | 27.44555 | 27.44555 |
| Safeway | 6477 Almaden Expy | 060855119071 | 2019-03-13 | 53 | 32.32476 | 32.32476 |
| Safeway | 6477 Almaden Expy | 060855119071 | 2019-03-14 | 40 | 24.39605 | 24.39605 |
| Safeway | 6477 Almaden Expy | 060855119071 | 2019-03-15 | 55 | 33.54456 | 33.54456 |
| Safeway | 6477 Almaden Expy | 060855119071 | 2019-03-16 | 62 | 37.81387 | 37.81387 |
| Safeway | 6477 Almaden Expy | 060855119071 | 2019-03-17 | 70 | 42.69308 | 42.69308 |
Above I only show results for the Safeway example’s first 10 recorded origins. There are 37*7 total rows for the one Safeway. None of these first 10 happen to have different results for upper/lower bound because they didn’t have “4” raw_visitor_counts.
Next, hourly:
sj_grocery_patterns_W190311_hourly <-
process_patterns_hourly(sj_grocery_patterns_W190311,hps_W190311)
sj_grocery_patterns_W190311_hourly <-
sj_grocery_patterns_W190311_hourly %>%
left_join(
sj_patterns_W190311 %>%
as.data.frame() %>%
dplyr::select(
safegraph_place_id,
location_name,
street_address,
naics_code
)
)
kable(
sj_grocery_patterns_W190311_hourly %>%
arrange(desc(raw_visit_counts),date,hour) %>%
dplyr::select(
location_name,
street_address,
date,
hour,
hourly_visits,
visit_counts_hourly_high,
visit_counts_hourly_low
) %>%
.[1:168,]
)
| location_name | street_address | date | hour | hourly_visits | visit_counts_hourly_high | visit_counts_hourly_low |
|---|---|---|---|---|---|---|
| Safeway | 6477 Almaden Expy | 2019-03-11 | 1 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 2 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 3 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 4 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 5 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 6 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 7 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 8 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 9 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 10 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 11 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 12 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 13 | 6 | 117.55268 | 115.79968 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 14 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 15 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 16 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 17 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 18 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 19 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 20 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 21 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 22 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 23 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-11 | 24 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 1 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 2 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 3 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 4 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 5 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 6 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 7 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 8 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 9 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 10 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 11 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 12 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 13 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 14 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 15 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 16 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 17 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 18 | 10 | 195.92114 | 192.99947 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 19 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 20 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 21 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 22 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 23 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-12 | 24 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 1 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 2 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 3 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 4 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 5 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 6 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 7 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 8 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 9 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 10 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 11 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 12 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 13 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 14 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 15 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 16 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 17 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 18 | 7 | 137.14480 | 135.09963 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 19 | 8 | 156.73691 | 154.39958 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 20 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 21 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 22 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 23 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-13 | 24 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 1 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 2 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 3 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 4 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 5 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 6 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 7 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 8 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 9 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 10 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 11 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 12 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 13 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 14 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 15 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 16 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 17 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 18 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 19 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 20 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 21 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 22 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 23 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-14 | 24 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 1 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 2 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 3 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 4 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 5 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 6 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 7 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 8 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 9 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 10 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 11 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 12 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 13 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 14 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 15 | 6 | 117.55268 | 115.79968 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 16 | 6 | 117.55268 | 115.79968 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 17 | 7 | 137.14480 | 135.09963 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 18 | 7 | 137.14480 | 135.09963 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 19 | 6 | 117.55268 | 115.79968 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 20 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 21 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 22 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 23 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-15 | 24 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 1 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 2 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 3 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 4 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 5 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 6 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 7 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 8 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 9 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 10 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 11 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 12 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 13 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 14 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 15 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 16 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 17 | 6 | 117.55268 | 115.79968 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 18 | 9 | 176.32903 | 173.69952 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 19 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 20 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 21 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 22 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 23 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-16 | 24 | 2 | 39.18423 | 38.59989 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 1 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 2 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 3 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 4 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 5 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 6 | 0 | 0.00000 | 0.00000 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 7 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 8 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 9 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 10 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 11 | 9 | 176.32903 | 173.69952 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 12 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 13 | 8 | 156.73691 | 154.39958 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 14 | 6 | 117.55268 | 115.79968 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 15 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 16 | 6 | 117.55268 | 115.79968 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 17 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 18 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 19 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 20 | 4 | 78.36846 | 77.19979 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 21 | 3 | 58.77634 | 57.89984 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 22 | 1 | 19.59211 | 19.29995 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 23 | 5 | 97.96057 | 96.49974 |
| Safeway | 6477 Almaden Expy | 2019-03-17 | 24 | 0 | 0.00000 | 0.00000 |
Above I show all 168 rows for the Safeway, for 168 hours in a week.
ggplot()+
geom_line(
data = sj_grocery_patterns_W190311_hourly %>%
group_by(date, hour) %>%
summarize(visit_counts_hourly_high = sum(visit_counts_hourly_high)),
aes(
x = hour,
y = visit_counts_hourly_high,
group = date,
color = date
)
)
The plot above shows the hourly profiles broken up by day of the week.
ggplot(
data = sj_grocery_patterns_W190311_hourly %>%
group_by(safegraph_place_id) %>%
arrange(date,hour) %>%
mutate(
hour_full = 1:168
) %>%
ungroup() %>%
group_by(hour_full) %>%
summarize(
visit_counts_hourly_high = sum(visit_counts_hourly_high),
visit_counts_hourly_low = sum(visit_counts_hourly_low)
)
) +
geom_line(
aes(
x = hour_full,
y = visit_counts_hourly_high
)
) +
geom_line(
aes(
x = hour_full,
y = visit_counts_hourly_low
)
)
The plot above shows the hourly time series for the whole week.